package mymyoux.io.mserverconnectorClasses
{
	import mymyoux.events.MEventDispatcher;
	import mymyoux.events.MPlaylistEvent;
	/**
	 * MPlaylist permet la gestion des personnes présentes dans un salon.
	 * @author Mymyoux
	 * @version 2.0
	 */
	public class MRoomPlaylist extends MEventDispatcher
	{
		/**
		 * MPlaylist à partir de laquelle la MRoomPlaylist est crée
		 */
		protected var playlist:MPlaylist;
		protected var name:String;
		/**
		 * Crée un objet de type MRoomPlaylist
		 */
		public function MRoomPlaylist(name:String,playlist:MPlaylist)
		{
			this.name=name;
			this.playlist=playlist;
			this.playlist.addEventListener(name+MPlaylistEvent.PEOPLE_IN,onPeopleIn);
			this.playlist.addEventListener(name+MPlaylistEvent.PEOPLE_OUT,onPeopleOut);
			this.playlist.addEventListener(MPlaylistEvent.PEOPLE_CHANGE_INFO,onPeopleInfo);
		}
		public function getId(people:MServerIdentifier):uint{
			return playlist.getId(people,name);
		}
		public function getPeople(id:int):MServerIdentifier{
			return playlist.getPeople(id,name);
		}
		/**
		 * Appelé lors de la connexion d'un joueur dans le salon correspondant à la MRoomPlaylist.
		 * @param e Evenement envoyé par la MPlaylist contenant le MServerIdentifier du joueur concerné.
		 */
		protected function onPeopleIn(e:MPlaylistEvent):void{
			dispatchEvent(new MPlaylistEvent(MPlaylistEvent.PEOPLE_IN,e.people,e.bubbles,e.cancelable));
		}
		/**
		 * Appelé lors de la déconnexion d'un joueur dans le salon correspondant à la MRoomPlaylist.
		 * @param e Evenement envoyé par la MPlaylist contenant le MServerIdentifier du joueur concerné.
		 */
		protected function onPeopleOut(e:MPlaylistEvent):void{
			dispatchEvent(new MPlaylistEvent(MPlaylistEvent.PEOPLE_OUT,e.people,e.bubbles,e.cancelable));
		}
		/**
		 * Appelé lors de la mise à jour du profil d'un joueur dans le salon correspondant à la MRoomPlaylist.
		 * @param e Evenement envoyé par la MPlaylist contenant le MServerIdentifier du joueur concerné.
		 */
		protected function onPeopleInfo(e:MPlaylistEvent):void{
			dispatchEvent(new MPlaylistEvent(MPlaylistEvent.PEOPLE_CHANGE_INFO,e.people,e.bubbles,e.cancelable));
		}
		/**
		 * @copy mymyoux.io.MServerConnector#me
		 */
		public function get me():MServerIdentifier{
			return playlist.me;
		}
	}
}